* main: (123 commits)
[red-knot] Handle explicit class specialization in type expressions (#17434)
[red-knot] allow assignment expression in call compare narrowing (#17461)
[red-knot] fix building unions with literals and AlwaysTruthy/AlwaysFalsy (#17451)
[red-knot] Type narrowing for assertions (take 2) (#17345)
[red-knot] class bases are not affected by __future__.annotations (#17456)
[red-knot] Add support for overloaded functions (#17366)
[`pyupgrade`] Add fix safety section to docs (`UP036`) (#17444)
[red-knot] more type-narrowing in match statements (#17302)
[red-knot] Add some narrowing for assignment expressions (#17448)
[red-knot] Understand `typing.Protocol` and `typing_extensions.Protocol` as equivalent (#17446)
Server: Use `min` instead of `max` to limit the number of threads (#17421)
[red-knot] Detect version-related syntax errors (#16379)
[`pyflakes`] Add fix safety section (`F841`) (#17410)
[red-knot] Add `KnownFunction` variants for `is_protocol`, `get_protocol_members` and `runtime_checkable` (#17450)
Bump 0.11.6 (#17449)
Auto generate `visit_source_order` (#17180)
[red-knot] Initial tests for protocols (#17436)
[red-knot] Dataclasses: synthesize `__init__` with proper signature (#17428)
[red-knot] Dataclasses: support `order=True` (#17406)
[red-knot] Super-basic generic inference at call sites (#17301)
...
Summary
We currently have special-casing that avoids false positives for
typing.Protocol, but the special-casing doesn't currently recognisetyping_extensions.Protocolas also being a valid class base, etc. Due to various bugfixes and performance optimisations having been backported via typing_extensions,typing_extensions.Protocolis a different symbol totyping.Protocolon most Python versions: it would be wrong for us to inferLiteral[True]as the result of the expressiontyping_extensions.Protocol is typing.Protocol, for example. Nonetheless, they should be treated identically by a type checker in terms of their semantics. This PR implements that.Test Plan
Existing mdtests have been updated to reflect that we no longer issue false-positive diagnostics on classes inheriting from
typing_extensions.Protocol.